#!/bin/bash

# 物理机部署停止脚本
# 使用方法：
#   ./stop-physical.sh          # 停止服务但保留nginx运行（避免IDE断开）
#   ./stop-physical.sh --stop-nginx  # 停止所有服务包括nginx

set -e

echo "停止物理机模式服务..."

# 停止后端服务
if [ -f "logs/backend.pid" ]; then
    BACKEND_PID=$(cat logs/backend.pid)
    if ps -p $BACKEND_PID > /dev/null 2>&1; then
        echo "停止后端服务 (PID: $BACKEND_PID)..."
        kill $BACKEND_PID
        sleep 2
        if ps -p $BACKEND_PID > /dev/null 2>&1; then
            echo "强制停止后端服务..."
            kill -9 $BACKEND_PID
        fi
    fi
    rm -f logs/backend.pid
fi

# 停止前端服务
if [ -f "logs/frontend.pid" ]; then
    FRONTEND_PID=$(cat logs/frontend.pid)
    if ps -p $FRONTEND_PID > /dev/null 2>&1; then
        echo "停止前端服务 (PID: $FRONTEND_PID)..."
        kill $FRONTEND_PID
        sleep 2
        if ps -p $FRONTEND_PID > /dev/null 2>&1; then
            echo "强制停止前端服务..."
            kill -9 $FRONTEND_PID
        fi
    fi
    rm -f logs/frontend.pid
fi

# 清理其他可能的进程
echo "清理其他相关进程..."
pkill -f "uvicorn app.main:app" 2>/dev/null || true
pkill -f "vite" 2>/dev/null || true
# 强制释放占用的端口
echo "释放端口..."
for port in 9980 9900 9981; do
    if command -v lsof &> /dev/null; then
        lsof -ti :$port | xargs kill -9 2>/dev/null || true
    elif command -v fuser &> /dev/null; then
        fuser -k $port/tcp 2>/dev/null || true
    fi
done

# 检查是否停止nginx（默认保留nginx运行）
if [ "$1" = "--stop-nginx" ]; then
    echo "停止Nginx服务..."
    systemctl stop nginx 2>/dev/null || true
    pkill nginx 2>/dev/null || true
    echo "移除nginx配置..."
    rm -f /etc/nginx/sites-enabled/torrentchecker
    systemctl reload nginx 2>/dev/null || true
else
    echo "跳过停止Nginx服务（保留IDE连接）"
fi

echo "✅ 所有服务已停止"